package sli

// 查看元素是否在切片内
func InArray[T int | string](val T, sli[]T) bool {
	for _, v := range sli {
		if val == v {
			return true
		}
	}
	return false
}

func ArrayColumn(key string, list []map[string]interface{}) []interface{} {
	if len(list) == 0 {
		return []interface{}{}
	}
	data := make([]interface{}, len(list))
	for _, v := range list {
		for kk, vv := range v {
			if kk == key {
				data = append(data, vv)
			}
		}
	}
	return data
}

//func ArrayColumn[T, V any](array []T, k any) any {
//	values := make([]V, len(array))
//	switch reflect.TypeOf(array).Elem().Kind() {
//	case reflect.Slice, reflect.Array:
//		for i, v := range array {
//			values[i] = reflect.ValueOf(v).Index(int(reflect.ValueOf(k).Int())).Interface().(V)
//		}
//		break
//	case reflect.Map:
//		for i, v := range array {
//			values[i] = reflect.ValueOf(v).MapIndex(reflect.ValueOf(k)).Interface().(V)
//		}
//		break
//	case reflect.Struct:
//		for i, v := range array {
//			values[i] = reflect.ValueOf(v).FieldByName(reflect.ValueOf(k).String()).Interface().(V)
//		}
//		break
//	}
//	return values
//}